const fs = require('fs');
const path = require('path');

// 检查是否传入命令行参数
if (process.argv.length < 3) {
    console.error('请传入要删除的文件或文件夹名称！');
    console.error('使用方式：node delManager.js [文件/文件夹名]');
    process.exit(1);
}

// 获取目标路径
const targetName = process.argv[2];
const targetPath = path.join(__dirname, targetName);

/**
 * 递归删除文件夹
 * @param {string} dirPath - 文件夹路径
 */
const deleteDirRecursively = (dirPath) => {
    // 读取文件夹内容
    const files = fs.readdirSync(dirPath);
    
    files.forEach((file) => {
        const filePath = path.join(dirPath, file);
        const stats = fs.statSync(filePath);

        if (stats.isFile()) {
            // 是文件，直接删除
            fs.unlinkSync(filePath);
            console.log(`已删除文件：${filePath}`);
        } else if (stats.isDirectory()) {
            // 是文件夹，递归删除
            deleteDirRecursively(filePath);
        }
    });

    // 删除空文件夹
    fs.rmdirSync(dirPath);
    console.log(`已删除文件夹：${dirPath}`);
};

// 执行删除操作
try {
    const stats = fs.statSync(targetPath);

    if (stats.isFile()) {
        // 目标是文件
        fs.unlinkSync(targetPath);
        console.log(`成功删除文件：${targetPath}`);
    } else if (stats.isDirectory()) {
        // 目标是文件夹
        deleteDirRecursively(targetPath);
        console.log(`成功递归删除文件夹：${targetPath}`);
    } else {
        console.error(`错误：${targetName} 既不是文件也不是文件夹`);
        process.exit(1);
    }
} catch (err) {
    if (err.code === 'ENOENT') {
        console.error(`错误：${targetName} 不存在于当前目录`);
    } else {
        console.error(`删除失败：${err.message}`);
    }
    process.exit(1);
}